package principal;

import java.io.File;
import java.util.ArrayList;
import java.util.Locale;

import java.util.List;

import negocio.documentacion.Cotizacion;
import negocio.documentacion.SolicitudCotizacion;
import negocio.items.ItemCotizacion;
import negocio.items.ItemSolicitudCotizacion;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
import com.thoughtworks.xstream.persistence.FilePersistenceStrategy;
import com.thoughtworks.xstream.persistence.PersistenceStrategy;
import com.thoughtworks.xstream.persistence.XmlArrayList;

public class ConversionXML {
	
	private static ConversionXML instancia;
	private XStream xml;
	
	private ConversionXML(){
		xml = new XStream(new DomDriver());
		this.setAlias();
		this.agregarConvertidor();
	}

	public static ConversionXML obtenerInstancia(){
		if(instancia==null)
			instancia= new ConversionXML();
		return instancia;
	}
	
	public void setAlias(){
		xml.alias("solicitudCotizacion", SolicitudCotizacion.class);
		xml.alias("itemSolicitudCotizacion", ItemSolicitudCotizacion.class);
		xml.alias("solicitudCotizacion", SolicitudCotizacion.class);
		xml.alias("itemSolicitudCotizacion", ItemSolicitudCotizacion.class);
		xml.alias("cotizacion", Cotizacion.class);
		xml.alias("itemCotizacion", ItemCotizacion.class);
	}
	
	public void agregarConvertidor(){
		xml.registerConverter(new ConvertidorFechaXML(new Locale("es","ar")));
		xml.addImplicitCollection(SolicitudCotizacion.class, "items");
		xml.addImplicitCollection(Cotizacion.class, "items");
	}
		
	public void guardarSolicitudCotizacion(SolicitudCotizacion sc){	
		PersistenceStrategy estrategia = new FilePersistenceStrategy(new File("C:/prueba/Solicitudes De Cotizacion"),xml);
		List lista = new XmlArrayList(estrategia);
		lista.add(sc);
	}
	
	public List<SolicitudCotizacion> obtenerSolicitudCotizacion(){
		PersistenceStrategy estrategia = new FilePersistenceStrategy(new File("C:/prueba/Solicitudes De Cotizacion"),xml);
		XmlArrayList persistentList = new XmlArrayList(estrategia);
		List<SolicitudCotizacion> list = new ArrayList(persistentList);
		return list;
	}
	
	public void generarCotizacionCliente(Cotizacion cotizacion){
		PersistenceStrategy estrategia = new FilePersistenceStrategy(new File("C:/prueba/Cotizaciones"),xml);
		List lista = new XmlArrayList(estrategia);
		lista.add(cotizacion);
	}
	
}
